Field of the Invention
The subject disclosure relates to methods and a system for an integrated approach for software application development. The software development process is characterized by an iterative cycle of requirements analysis, design & architecture, software coding, functional testing, and integration testing. The value chain of software delivery usually points in the opposite direction of the steps in the process. That is, the first two steps of requirements analysis and design have an outsized impact on the entire software delivery life cycle. Poorly documented user requirements and design can adversely affect the entire cycle in such a way that extra effort spent in coding and testing cannot rescue the initial value lost.
The subject disclosure relates to systems and methods for software application development at all levels, integrating tools vertically through the development life cycle and creating a structured view of the data inside the software development cycle. This present invention addresses the requirements analysis, design, development and testing aspects of software development through systematic tools and methods. The central core of the present invention revolves around requirements specification for software application development. Requirements specifications for software applications in the context of the present invention comprises a business process workflow, user interface specifications, business rules specifications, integration requirements and design, and integration interface data fields. Beyond requirements specifications, the present invention also addresses collaboration, test case generation, defect management (creating, managing defects against the requirements), defect completion predictive modeling, effort estimation, tracking work progress, project planning and tracking, and a novel audio-visual playback of user stories. The present invention brings all these diverse aspects together on an integrated software development platform.
Description of the Related Art
Across the software development life cycle, there are many tools to aid in development and testing, but relatively few that aid in requirements analysis and design using a systematic approach. The general purpose tools (such as word processors, spreadsheets) used for requirements analysis and design result in an unstructured view of the data and suffer from a number of limitations. The first limitation is that there is not a single source of true data. This is also described as a lack of normalization, or keeping multiple copies of data elements in a consistent state. There is a potential for data elements to fall out of sync over time, leading to an inconsistent product. A second limitation is the limited concurrency available in general purpose toolsets. The inability to work concurrently on the same data element is a major challenge when teams are distributed or located offshore. A third limitation is the lack of consistency between current tools. The ability to manually share data between tools such as Excel, Word, Visio, and Outlook also results in an inability to enforce structure and format. The loose enforcement of consistency adds another item that must be externally managed, and provides a door for human errors to enter the process. A fourth limitation is the lack of productivity imposed by using a collection of general purpose tools. Using several different tools to handle text, formatted data, pictures, and diagrams is not efficient, user-friendly or intuitive. A fifth limitation is the limited incremental tracking available in general purpose tools. It is difficult, if not impossible, to track what exactly was changed, by whom and at what time, or when data is being manually administered by several parties in several locations. A sixth limitation with current software development tools is that the parties involved typically resort to email for communication, which is inefficient and lacks context. Collaboration through email mixed with social networking, separated from the work flow tools, can quickly lead to errors in understanding. A final limitation with current tools is the inability to search for items of interest in the data quickly. Searching across documents, searching meta-data, and even cross-media searches such as text embedded in a picture, is cumbersome or even impossible when using a collection of general purpose tools.
Many of the tools that purport to address the problems of the current collections of tools do not work at the most valuable levels of the software delivery chain. The requirements and design phases of software development account for roughly 40% of the total effort, but failure to address those early steps leads to an even greater loss later on in the development chain. The further up the value chain one goes, toward the requirements and design phases, several changes occur that make the common software solutions inefficient. For example, the increased interaction with end users and the more uncertainty and ambiguity don't mesh well with the current tools. The knowledge intensity and the lesser ability to automate mean that current tools are missing a large opportunity to add value to the development cycle early in the planning cycle.
One patent that documents a method for addressing the problem of managing communications in the development environment is U.S. Pat. No. 7,644,390 issued on Jan. 5, 2010, to Khodabandehloo, et al. Khodabandehloo discloses systems and methods for constructing a visual model of a software development project. This visual model is viewable by all members of the development team, each from his own perspective. The visual model changes dynamically to reflect changes made to the model by individual contributors. Khodabandehloo focuses only on the communication between team members and creating a visual representation of the development cycle. Khodabandehloo's present invention fails to address certain key aspects of the software development process such as an ability to create and specify design patterns, an ability to view changed user interface widgets with a graphical aid (such a capability is critical to enabling incremental, iterative development), setting up business rules specifications (which are a key element of software application requirements specification), automatic effort estimation, automatic test case generation, visual depiction of software defects side-by-side with the requirements, ability to playback the user story using an audio-visual playback, and collaboration.